package common.itemhandling;

import java.io.Serializable;
import java.text.Collator;
import java.util.Vector;

import com.db4o.activation.ActivationPurpose;
import com.db4o.activation.Activator;
import com.db4o.ta.Activatable;
import common.itemhandling.files.Datei;
/**
 * @author Julius Ollesch
 * 
 */
public class Eintrag implements Serializable, Activatable {
	/**
	 * 
	 */
	private static final long serialVersionUID = -6019863059444455225L;

	private static final String komma = ", "; //$NON-NLS-1$

	private static final String leer = ""; //$NON-NLS-1$

	private String name;

	private int id;
	private String beschreibung;
	private int kategorie;
	private String tags;
	private int ersteller;
	private Vector<Datei> dateien;
	private boolean gesperrt;
	private boolean inBearbeitung;

	public Eintrag(String name, String beschreibung, int kategorie,
			String tags, int ersteller, Datei datei) {
		super();
		this.name = name;
		this.beschreibung = beschreibung;
		this.dateien = new Vector<Datei>();
		this.getDateien().add(datei);
		this.ersteller = ersteller;
		this.inBearbeitung = false;
		this.kategorie = kategorie;
		this.tags = tags;
		this.gesperrt = false;
		this.id = (name + beschreibung + ersteller + kategorie + tags + System
				.currentTimeMillis()).hashCode();
	}

	public Eintrag(String name, String beschreibung, int kategorie,
			String tags, int ersteller, Vector<Datei> dateiListe) {
		super();
		this.name = name;
		this.beschreibung = beschreibung;
		this.dateien = dateiListe;
		this.ersteller = ersteller;
		this.inBearbeitung = false;
		this.gesperrt = false;
		this.kategorie = kategorie;
		this.tags = tags;
		this.id = (name + beschreibung + ersteller + kategorie + tags)
				.hashCode();
	}

	public Eintrag(String name, String beschreibung, String tags, int ersteller) {
		super();
		this.name = name;
		this.beschreibung = beschreibung;
		this.dateien = new Vector<Datei>(10);
		this.ersteller = ersteller;
		this.inBearbeitung = false;
		this.gesperrt = false;
		this.kategorie = 0;
		this.tags = tags;
		this.id = (name + beschreibung + ersteller + kategorie + tags)
				.hashCode();
	}

	public Eintrag(String name, String beschreibung, String tags,
			int ersteller, Datei datei) {
		super();
		this.name = name;
		this.beschreibung = beschreibung;
		this.dateien = new Vector<Datei>();
		this.getDateien().add(datei);
		this.ersteller = ersteller;
		this.inBearbeitung = false;
		this.kategorie = 0;
		this.tags = tags;
		this.gesperrt = false;
		this.id = (name + beschreibung + ersteller + kategorie + tags + System
				.currentTimeMillis()).hashCode();
	}

	@Override
	public void activate(ActivationPurpose arg0) {
		// TODO Auto-generated method stub

	}

	public void addTag(String tags) {
		if (Collator.getInstance().equals(this.tags, leer)) {
			this.tags = tags;

		} else {
			this.tags += komma + tags;
		}
	}

	@Override
	public void bind(Activator arg0) {
		// TODO Auto-generated method stub

	}

	public String getBeschreibung() {
		return beschreibung;
	}

	public Vector<Datei> getDateien() {
		return dateien;
	}

	public int getErsteller() {
		return ersteller;
	}

	public int getId() {
		return id;
	}

	public int getKategorie() {
		return kategorie;
	}

	public String getName() {
		return name;
	}

	public String getTags() {
		return tags;
	}

	public boolean isGesperrt() {
		return gesperrt;
	}

	public boolean isInBearbeitung() {
		return inBearbeitung;
	}

	public void setBeschreibung(String beschreibung) {
		this.beschreibung = beschreibung;
	}

	public void setDateien(Vector<Datei> dateien) {
		this.dateien = dateien;
	}

	public void setErsteller(int ersteller) {
		this.ersteller = ersteller;
	}

	public void setGesperrt(boolean gesperrt) {
		this.gesperrt = gesperrt;
	}

	public void setInBearbeitung(boolean inBearbeitung) {
		this.inBearbeitung = inBearbeitung;
	}

	public void setKategorie(int kategorie) {
		this.kategorie = kategorie;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setTags(String tags) {
		this.tags = tags;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.getName();
	}

}
